/**
 * @see 该界面是“老师界面”的“授权管理”
 */
import { getCurrentXnxq } from '../../../../../utils/util'
Page({
  data: {
    authorizeManageData: [], // 授权管理data数据
    bIsPopupShow: false, // 弹窗是否显示
    stuIdValue: '', // 授权弹窗input框value值

    courseItem: {}, // 课程数据（从上一层传回来的）
    sDelAuthId: '', // 点击删除获取学生授权id
    // sAuthorizationStuId: '', // 点击授权或取消授权获取的学生id
    sXnxq: getCurrentXnxq(), // 学年学期
    appMsg: { // 数据为空或异常时出现的组件
      type: '',
      show: false
    }
  },
  onLoad (options) {
    try {
      const { item } = options
      this.setData({ courseItem: JSON.parse(item) })
      this.getAuthorizationStu()
    } catch (err) {
      wx.showToast({
        title: '数据异常，请稍后再试',
        icon: 'none',
        duration: 2000
      })
    }
  },
  /**
   * @see 接口-获取授权学生列表
   */
  getAuthorizationStu () {
    const { courseItem } = this.data
    const request = {
      courseId: courseItem.courseId // 课程id
    }
    this.setData({
      appMsg: {
        type: 'loading',
        show: true
      }
    })
    wx.$API['schoolStudy/getAuthorizationStu'](request).then((result) => {
      const { data } = result
      if (data.length) {
        this.setData({
          authorizeManageData: data,
          appMsg: {
            type: 'loading',
            show: false
          }
        })
      } else {
        this.setData({
          appMsg: {
            type: 'none',
            show: true
          },
          authorizeManageData: data
        })
      }
    }).catch((err) => {
      console.log(err)
      this.setData({
        appMsg: {
          type: 'err',
          show: true
        }
      })
    })
  },
  /**
   * @see 接口-添加授权学生课程
   */
  addAuthorizationStuCourse () {
    const { courseItem, stuIdValue } = this.data
    const request = {
      studentId: stuIdValue, // 学生学号
      courseId: courseItem.courseId // 课程id
    }
    wx.showLoading({
      title: '请稍后…',
      mask: true
    })
    wx.$API['schoolStudy/addAuthorizationStuCourse'](request).then(() => {
      wx.hideLoading()
      this.getAuthorizationStu()
      wx.showToast({
        title: '添加成功'
      })
    }).catch((error) => {
      wx.hideLoading()
      wx.showToast({
        title: error,
        icon: 'none'
      })
    })
  },
  /**
   * @see 接口-删除授权学生课程
   */
  delAuthorizationStuCourse () {
    const { sDelAuthId } = this.data
    const request = {
      authId: sDelAuthId // 授权id
    }
    wx.showLoading({
      title: '请稍后…',
      mask: true
    })
    wx.$API['schoolStudy/delAuthorizationStuCourse'](request).then(() => {
      wx.hideLoading()
      this.getAuthorizationStu()
      wx.showToast({
        title: '删除成功'
      })
    }).catch((error) => {
      wx.hideLoading()
      wx.showToast({
        title: error,
        icon: 'none'
      })
    })
  },
  /**
   * @see 点击“添加学生”按钮
   */
  bindAddStuId () {
    this.setData({
      bIsPopupShow: true
    })
  },
  /**
   * @see 点击“删除”按钮
   */
  bindDelete (e) {
    const { delIndex, delItem } = e.currentTarget.dataset
    const sDelAuthId = delItem.authId
    this.setData({ sDelAuthId })
    wx.showModal({
      title: '删除操作',
      content: '是否删除此条授权？本次操作将永久删除此条授权！',
      confirmText: "确定",
      cancelText: "取消",
      success: (res) => {
        if (res.confirm) {
          this.delAuthorizationStuCourse()
        } else {
          wx.showToast({
            title: '已取消',
            icon: 'none'
          })
        }
      }
    })
  },
  /**
  * @see input框失去焦点时触发
  */
  bindInputValue (e) {
    this.setData({
      stuIdValue: e.detail.value
    })
  },
  /**
  * @see 点击“确定”按钮
  */
  bindConfirm () {
    const { stuIdValue } = this.data
    if (stuIdValue == '') {
      wx.showToast({
        title: '请输入学号',
        icon: 'none'
      })
      return
    } else {
      this.addAuthorizationStuCourse()
      this.setData({
        bIsPopupShow: false
      })
    }
  },
  /**
   * @see 点击“取消”按钮
   */
  bindCancel () {
    this.setData({
      bIsPopupShow: false
    })
    wx.showToast({
      title: '已取消',
      icon: 'none'
    })
  },
  /**
   * @see 点击刷新页面
   */
  clickMsgButton () {
    this.getAuthorizationStu()
  }
})